package com.jiujichaoshi.oauth.server.security.verify;

/**
 * Description: <p>人机验证服务类型</p>
 *
 * @author YangLong [410357434@163.com]
 * @version V1.0
 * @date 2021/7/6
 */
public enum VerifyType {
    /**
     * 阿里云类型
     */
    ALI_YUN(1, "阿里云人机验证服务", AliYunVerifyServiceImpl.class),
    /**
     * 网易云类型
     */
    NET_EASY(2, "网易云人机验证服务", NetEasyVerifyServiceImpl.class),
    /**
     * 腾讯云类型
     */
    TENCENT(3, "腾讯云人机验证服务", TencentVerifyServiceImpl.class),
    /**
     * luosimao
     */
    LUOSIMAO(4, "luosimao人机验证服务", LuosimaoVerifyServiceImpl.class);

    private int id;
    private String description;
    private Class<? extends VerifyService> impl;

    VerifyType(int id, String description, Class<? extends VerifyService> impl) {
        this.id = id;
        this.description = description;
        this.impl = impl;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @SuppressWarnings("unchecked")
    public Class<VerifyService> getImpl() {
        return (Class<VerifyService>) impl;
    }

    public void setImpl(Class<VerifyService> impl) {
        this.impl = impl;
    }
}
